Emoji suggester and adapted user interface

ABSTRACT

Techniques are disclosed herein that provide an enhanced user interface that improves user interaction for suggestion and placement of digital images in a communication such as a message thread. In an example, a system performs operations to: derive context of a message being entered by a user in a user interface, wherein the message is part of a message thread; search digital images based on the context to select one or more digital images; present, through the user interface, the one or more digital images for insertion at different positions within the message thread based on the context; receive, through the user interface, a selection of at least one of the one or more digital images; modify the message thread by inserting the at least one of the one or more digital images to replace content at a plurality of positions within the message thread in response to the user selection; and store the modified message thread in a storage device.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a Continuation application under 35 USC § 120 ofU.S. patent application Ser. No. 15/618,439, filed Jun. 9, 2017,entitled “Emoji Suggester and Adapted User Interface,” and is herebyincorporated by reference in its entirety.

BACKGROUND

Emojis provide a small digital image or icon used to express an idea,emotion, etc, in electronic communication. Emojis are Unicode not easilyaccessible for customers to select without having additional add-onservices. In many cases, functionality for inserting an emoji into aconversation is limited to a few specific exemplary icons, which may notbe truly related to the context that is present in that conversation.For instance, a user may type the word “bug” into a conversation about asoftware update and receive an emoji for an insect such as a ladybugrather than a software-related emoji.

In current emoji services, a user may be able to select an emoji icon toreplace a word in a conversation. However, placement for an emoji isfixed where the emoji can only replace a specific word in aconversation. Furthermore, if a user wishes to insert multiple emojisinto a conversation, the user has to take manual action to replace eachword with a specific emoji.

As such, non-limiting examples of the present disclosure pertain to anenhanced user interface that improves user interaction when a user isworking with emojis.

SUMMARY

Non-limiting examples of the present disclosure describe an enhanceduser interface that improves user interaction for suggestion andplacement of digital images in a communication such as a message thread,call/video communication, email, text message, etc. In an example, amethod includes deriving context of a message being entered by a user ina user interface, wherein the message is part of a message thread,searching digital images based on the context to select one or moredigital images; presenting, through the user interface, the one or moredigital images for insertion at different positions within the messagethread based on the context; receiving, through the user interface, aselection of at least one of the one or more digital images; modifyingthe message thread by inserting the at least one of the one or moredigital images to replace content at a plurality of positions within themessage thread in response to the user selection; and storing themodified message thread in a storage device.

In another example, a system includes a processor and a memory. Thememory includes instructions, which when executed by the processor,causes the system to perform operations that include: deriving contextof a message being entered by a user in a user interface, wherein themessage is part of a message thread; searching digital images based onthe context to select one or more digital images; presenting, throughthe user interface, the one or more digital images for insertion atdifferent positions within the message thread based on the context;receiving, through the user interface, a selection of at least one ofthe one or more digital images; modifying the message thread byinserting the at least one of the one or more digital images to replacecontent at a plurality of positions within the message thread inresponse to the user selection; and storing the modified message thread.

In another example, a computer-readable medium storescomputer-executable instructions that, when executed by at least oneprocessor, causes the at least one processor to execute a method thatinclude: deriving context of a message being entered by a user in a userinterface, wherein the message is part of a message thread; searchingdigital images based on the context to select one or more digitalimages; presenting, through the user interface, the one or more digitalimages for insertion at different positions within the message threadbased on the context; receiving, through the user interface, a selectionof at least one of the one or more digital images; modifying the messagethread by inserting the at least one of the one or more digital imagesto replace content at a plurality of positions within the message threadin response to the user selection; and storing the modified messagethread.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter. Additionalaspects, features, and/or advantages of examples will be set forth inpart in the description which follows and, in part, will be apparentfrom the description, or may be learned by practice of the disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

Non-limiting and non-exhaustive examples are described with reference tothe following figures.

FIG. 1 illustrates an exemplary method related to suggestive placementof an emoji within a communication with which aspects of the presentdisclosure may be practiced.

FIG. 2 illustrates an exemplary method related to scanning for andreplacing content with emojis on behalf of a user with which aspects ofthe present disclosure may be practiced.

FIG. 3 is a block diagram illustrating an example of a computing devicewith which aspects of the present disclosure may be practiced.

FIGS. 4A and 4B are simplified block diagrams of a mobile computingdevice with which aspects of the present disclosure may be practiced.

FIG. 5 is a simplified block diagram of a distributed computing systemin which aspects of the present disclosure may be practiced.

DETAILED DESCRIPTION

Non-limiting examples of the present disclosure describe an enhanceduser interface that improves user interaction for suggestion andplacement of emojis in a communication such as a message thread,call/video communication, email, text message, etc., In othernon-limiting examples, context associated with an exemplarycommunication (e.g. message thread) may be analyzed and used to provideemoji suggestions as well as provide suggested placement positions forinsertion of an emoji within the communication. Context of acommunication may comprise but is not limited to: content within thecommunication, a state of the communication (e.g. current state forresponse/reply), telemetric analysis associated with the communication,users associated with the communication and signal data (e.g. usersignal data, device signal data, application signal data, etc.)associated with the communication, users and/or devices associated withthe communication, among other examples. For example, results fromcontextual analysis of a message thread may be utilized to rank andfilter emojis as suggestions for replacing content (e.g. word/words)within a message thread. Additionally, signal data associated with acommunication (e.g. message thread), user/users, device, etc. mayfurther be analyzed to improve ranking and filtering of emojis, forexample, where emojis can be presented that are personalized for thecontext of a message that the user is working with. In further examples,results of contextual analysis (including analysis of signal data) of amessage thread may be utilized to determine placement positions forinsertion of an emoji in a message thread. For instance, placementpositions for inserting an emoji into a message thread can be ranked,filtered and presented (e.g. highest N number of predicted positions forplacement) to a user through a user interface. In at least one example,a position for insertion of an emoji may be determined based on a resultof the contextual analysis, where the emoji may be automaticallyinserted at that determined position. In further instances, additionalsuggestions for placement of the emoji may be provided through a userinterface of an application where selectable user interface (UI)features may be presented to a user to quickly and efficiently place anemoji at a desired position within a message thread.

Moreover, in additional non-limiting examples, content of acommunication may be scanned where specific portions of content can bereplaced with emojis on behalf of a user. As an example, a long messagemay be written out, where an exemplary application/service is configuredto scan the message content, analyze the message content and replacesome of the words with emojis to shorten (and liven up) the message.Contextual analysis of a communication as well as learning modeling(e.g. based on signal data associated with past actions from a user orplurality of users) can be utilized to improve processing, for example,to predict which words a user may want to replace and how tore-configure the message content on behalf of the user. Suggestions andnotifications for a automatic replacement of content with an emoji onbehalf of a user may be presented through a user interface of anapplication.

Accordingly, the present disclosure provides a plurality of technicaladvantages including but not limited to: an improved user interface forpresentation and placement of emojis in an application/service, abilityto generate message drafts that comprise emoji content on behalf of auser, more efficient operation of processing devices (e.g., savingcomputing cycles/computing resources) for presentation and placement ofemojis, improving user interaction with exemplary application/servicesand extensibility to access and integrate data from differentapplications/services of a distributed network to improve applicationprocessing, among other examples.

FIG. 1 illustrates an exemplary method 100 related to suggestiveplacement of an emoji within a communication with which aspects of thepresent disclosure may be practiced. Method 100 describes examplesrelations to generation and management of an exemplary real-timevisualization providing context data within an application/service. Forease of understanding, examples described herein relate to anapplication/service that is configured as a collaborative teamenvironment. While examples described herein reference a collaborativeteam environment, it is to be understood that processing operations anduser interface examples described herein can extend to any type ofapplication/service that provides message threads which include multipleusers.

As an example, method 100 may be executed by an exemplary processingdevice and/or system such as those shown in FIGS. 3-5. In examples,method 100 may execute on a device comprising at least one processorconfigured to store and execute operations, programs or instructions.Operations performed in method 100 may correspond to operations executedby a system and/or service that execute computer programs, applicationprogramming interfaces (APIs), neural networks or machine-learningprocessing, among other examples. As an example, processing operationsexecuted in method 100 may be performed by one or more hardwarecomponents. In another example, processing operations executed in method100 may be performed by one or more software components. In someexamples, processing operations described in method 100 may be executedby one or more applications/services associated with a web service thathas access to a plurality of application/services, devices, knowledgeresources, etc. Processing operations described in method 100 may beimplemented by one or more components connected over a distributednetwork, where an exemplary collaborative team environment may be adistributed service accessed via network connection.

Method 100 begins at processing operation 102, where an exemplarycommunication of an application is analyzed. As an example, acommunication may be an electronic communication in any form and may bereceived through any of a plurality of modalities. Examples ofmodalities include but are not limited to: message threads, call/videocommunications, emails, text messages, social networking services,productivity applications (e.g. web browsing applications, spreadsheetapplications, word processing applications, notes applications,presentation applications) etc. An exemplary application/service is amessaging application (e.g. SMS messaging, email, etc.) or anyapplication that provides input, for example, where a user can enterinput into an input field such as a message thread, web search service,etc. A message thread is a sequence of one or more responses that mayinclude one or more users. In one example, an exemplaryapplication/service is a collaborative team environment that enablesusers to communicate collaboratively in teams/groups, for example, on aproject by project basis. A collaborative team environment is ateam-based groupware solution that helps people work togethercollectively while located remotely from each other. Collaborative teamenvironments enable real time collaboration synchronously as well asasynchronously. As an example, collaborative team environments can beconfigured to include functionality such as: multimodal communication,sharing of data including electronic calendars, collective writingmessages and communication in message threads, e-mail handling, shareddatabase access, and management of electronic meetings where each personis able to see and display information for others, among other examples.An exemplary collaborative team environment may further be extensible tointerface with other applications/services including social networkingservices and other applications/services associated with a platform(e.g. Microsoft® Office 365® that may provide a suite of applications).

As referenced above, an exemplary communication evaluated in processingoperation 102 may be a message thread of an application service.Analysis (processing operation 102) of a message thread may compriseexecuting contextual analysis of aspects associated with the messagethread. For example, processing operation 102 may comprise processingoperations that evaluate context associated with an exemplarycommunication (e.g. message thread), which may be used to provide emojisuggestions as well as provide suggested placement positions forinsertion of an emoji within the communication. Context of acommunication may comprise but is not limited to: content within thecommunication, a state of the communication (e.g. current state forresponse/reply), telemetric analysis associated with the communication,users associated with the communication and signal data (e.g. usersignal data, device signal data, application signal data, etc.)associated with the communication, users and/or devices associated withthe communication, among other examples. For example, results fromcontextual analysis of a message thread may be utilized to rank andfilter emojis as suggestions for replacing content (e.g. word/words)within a message thread. In further example, results of contextualanalysis of a message thread may be utilized to determine placementpositions for insertion of an emoji in a message thread.

As an example, context of a message thread that may be analyzed(processing operation 102) comprises applying input understandingprocessing to evaluate different aspects of a message/message thread.Contextual analysis of a communication as well as learning modeling(e.g. based on signal data associated with past actions from a user orplurality of users) can be utilized to improve processing, for example,to predict which words a user may want to replace and how tore-configure the message content on behalf of the user. Analysis ofcontext of a message input may comprise applying one or more inputunderstanding models in coordination with knowledge repositories and/orknowledge graphs to evaluate semantic understanding, subject/entities,etc. In one example, input understanding processing for contextualanalysis of a message input may be further executed by a web searchengine service (e.g. Bing®) and/or an intelligent personal assistantservice (e.g. Cortana®). Models, knowledge repositories and associatedcomponents for analysis of message input and input understandingprocessing are known to one skilled in the art. In analyzing a messageinput, components may be applied to determine intent and/or interests ofthe user. Processing operations for determining intent and userinterests are known to one skilled in the art. Components used foranalyzing message input may be incorporated within an exemplaryapplication/service or alternative an application/service may beextended to connect with other applications/services in a distributednetworking example. For instance, a message/message thread (andassociated signal data) may be transmitted to other components orapplications/services to execute analysis of a message, for example,where results are returned to enhance an exemplary user interface thatmay provide emojis and suggested or predictive placement for selectedemojis.

Contextual analysis of a message thread (or multiple threads) maycomprise evaluating a state of the message thread as well as messagedata of the message thread. Input understanding models may be utilizedto analyze as current state of a message thread, for example, todetermine a specific word (or words, sentence, etc.) that is currentlybeing entered as and provide a context for entry of that word. This maybe useful data to assist with ranking and filtering of emojis that areto be presented to a user. In further examples, contextual evaluationcomprises evaluating an entirety of message data of a message thread.Message data may comprise previous message data may be correspondence inany form including but not limited to: emails, text messages, chat orconferencing communications, file data (including video and/or audiofiles), among other examples. For instance, previous message data may beassociated with a second user (or multiple other users of a messagethread) where the previous message data comprises message data fromcorrespondence between the first user and the second user across one ormore message threads. Such data may be further used to rank and filteremojis for selection as well as provide suggestive placement options forinserting an emoji into a message thread.

In analyzing (processing operation 102) an exemplary communication,collected signal data may also be evaluated. Signal data may comprisedata collected from any of: user devices, user accounts, specificapplications/services, etc. Such data may be useful to provide apersonalization of suggestions for a user. For instance, a user mayprefer certain emojis for specific words or prefer to place certainemojis in specific position within a message thread. Telemetric analysismay be executed on collected signal data and used for assisting withprocessing determinations. In at least one example, collected signaldata may be utilized in a weighted model that may be utilized for makinga determination for ranking/filtering emojis or predictive placement ofemojis within a message thread. User signal data may comprise any datarelating to actions (explicit or implicit) that are taken by a user,user preferences, settings, etc., which may be evaluated to determineintent and/or interests of the user. In another instance, signal datafrom a device (e.g. device type, locational data, application usage,etc.) may be used to further assist with making processingdeterminations. In further examples, signal data from a suite ofproductivity services or other applications/services affiliated with aplatform (e.g. Microsoft®, Apple®, Google®, etc.) may be collected andanalyzed to assist with making processing determinations. For instance,a user may have a platform user account where cross-application usage ofthe user (or other users) can be utilized to assist with makingprocessing determinations.

Flow may proceed to processing operation 104, where emoji suggestionsare presented for insertion in a communication. Processing operation 104may comprise presenting one or more emoji suggestions for insertion intoa message thread, for example, to replace a specific word in the messagethread. Contextual analysis of a communication (e.g. message thread), asexecuted in processing operation 102, may be used to determine emojis topresent to a user through a user interface of an application. In atleast one example, emoji suggestions for insertion into the messagethread may be ranked and filtered for presentation within a userinterface of an application based on the analysis of the message thread.A highest number (N) ranked emojis may be output for display through auser interface of an exemplary application/service. For instance, a userinterface may be configured to provide an array of emojis that areassociated with specific words, which may be suggested for insertioninto a message thread. As an example, the array of emojis maypre-defined with basic words and images association, but can beconfigured by the user to add new words as well as new emojis. In otherexamples, emojis may be retrieved from other applications/services (e.g.first, second or third-party services), where contextual analysis may beused to rank and filter emojis for presentation.

In processing operation 104, an exemplary emoji suggester may beutilized to present emojis for selection within a user interface of anapplication/service. An exemplary emoji suggester may be incorporatedwithin an exemplary application/service or may be a separateapplication/service that interfaces with an executingapplication/service. An emoji suggester is a graphical element, forexample, that may be presented above (below, on the side, etc.) of theinput box when the control is single line or presented above (below, onthe side, etc.) the line of text in a multi-text input (text area). Theemoji suggester may be single-lined with the height a of singleemoji/position icon. Different aspects of the emoji suggester may varybased on developer and/or user configurations.

The emoji suggester may contain an array of words stored in a hash table(hash map) for each word, where words may be mapped to specific emojis.This enables faster association between words and possible emoji tosuggest, which improves processing efficiency and user interaction. Anexemplary hash key for the hash table may vary by developerspecifications. In one example, a hash is set for words in the pluralform or the verb in the conjugated form. Furthermore, the emojisuggester is configured to handle different verb tenses as well assingular and pluralization of words. The emoji suggester may further beconfigured to work with different letter case, identify emojis despitemisspellings, etc.

Further, processing operations related to presenting emojis may beoptimized and continuously updated over time. For example, synonyms ofwords may not present an emoji twice but the emoji suggester may beconfigured to point to the original hash entry. For example, emojis for“assignment” may have 5 emojis where emojis for “task” may have verysimilar suggestions. Instead of repeating the 5 emojis for resultsrelated to tasks, results for a search of “task” may point to the 5emojis for a search of“assigment.” Not only does this this preservememory space but it also allows for changes to emojis without having torepeat the modification on multiple keywords. As identified above,contextual analysis of words may also adjust what emojis are suggestedfor specific words, which may ultimately lead to some variation in emojisuggestions for similar words such as “assignment” and “task”.

In one example of processing operation 104, user interface features foremoji suggestion (e.g. through the emoji suggester) are configured toautomatically open/display if a word matches the pre-defined words andimages collection associated with the array of emojis. The emojisuggester may appear when the user begins typing. If the user wants touse an emoji, this one needs to press the “up” key to select the emoji.If the user hit “enter” the emoji is selected, the position choices isdisplayed. The user can select a position with the left and right arrow(like for emoji). Once the choice is done, by pressing “enter” the emojisuggester closes and the emoji is inserted. In further examples, userinterface features for the emoji suggester are touch and/or voiceenabled, among other alternative forms of input that are known to oneskilled in the art. In alternate examples, an exemplary user interfaceis configured to enable a user to manually access a listing of emojis,where user interface features may be presented to enable users to searchspecific emojis. For instance, a user interface (UI) feature for quickdisplay of emoji suggestions may be accessible through the UI of anexemplary application/service.

Flow may proceed to processing operation 106, where a selection of anemoji (from the listing of presented emojis) may be received andprocessed. Selection (processing operation 106) may be received throughany form of input that is associated with a computing device as known toone skilled in the art where an exemplary application/service isconfigured to work with the various forms of input. A selection of anemoji may comprise receiving input of a selection of one or more of theranked and filtered emojis presented to the user through the userinterface.

In some alternative examples of method 100, flow may proceed toprocessing operation 108, where further analysis of a communicationoccurs, for example, based on a user selection of an emoji. An exemplarycommunication (e.g. message thread) may be analyzed to determinedifferent insertion points within a communication for placement of aselected emoji. As previously described (in processing operation 102),contextual analysis of a communication for placement of an emoji mayoccur have already occurred. In some instances, additional signal datacollected (e.g. selection of specific emoji) may be considered indetermining optimal placement positions within a communication, wheresignal data collected in real-time to update ranking and filtering forpresenting insertion points for a selected emoji. In such instances,processing operation 108 may comprise re-analyzing context of acommunication for determining positioning of insertion points for aselected emoji. Whether analysis of placement positions for insertion ofan emoji happens before selection of an emoji (or after), placementpositions for inserting an emoji into a message thread can be ranked,filtered and presented (e.g. highest N number of predicted positions forplacement) to a user through a user interface. In one example, two ormore different UI features for insertion points of a selected emoji aregenerated and simultaneously presented to the user for selection.

In further alternative examples of method 100, flow may proceed toprocessing operation 110, where a selected emoji may be automaticallyinserted at a determined position within a communication such as amessage thread. For instance, a selected emoji may be automaticallyinserted at a determined position based on the analysis of the contextof the message thread and/or the analysis of the signal data (e.g. usersignal data). In one example, an emoji can be predictively placed in themost appropriate location with the option to quickly move it anotherlocation through the UI based on additional UI features presented forthe user through the UI. That is, in examples where an emoji isautomatically inserted at a specific position, additional UI featuresfor re-positioning of the emoji may be automatically displayed for theuser. This may enable efficient re-positioning of an inserted emojiwithout the user having to take multiple steps (e.g. click, select,drag, drop, etc.) to re-position the emoji.

In any example, flow may proceed to processing operation 112, where UIfeatures for insertion of a selected emoji are presented through the UIof the application/service. Processing operation 112 may comprisepresenting one or more of the plurality of selectable user interfacefeatures for positioning a selected emoji for insertion orre-positioning of the automatically inserted emoji (in examplesprocessing operation 110). A plurality of selectable UI features may bepresented through the user interface, where the plurality of selectableUI features are usable for insert of the selected emoji at differentpositions within the communication. The plurality of selectable UIfeatures provide placement positions for insertion of the emoji at twoor more selected from a non-limiting group: at a beginning of a textinput field, before a specific word in the message thread, after thespecific word in the message thread, as a replacement for the specificword and at an end of the text input field, at the top of acommunication, in a signature of a communication, in a header/footer ofa communication, as a comment/note, etc. UI features for specificinsertion points may be distinguished from other parts of thecommunication, for example, through, color, alerts, formatting, etc. Inone example, multiple UI features for insertion are presented throughthe UI where the UI features overlay an exemplary communication.Additional UI features may be presented for control and management ofthe UI features for insertion.

Flow may proceed to decision operation 114, where it is determinedwhether a selection is received for a UI insertion point. If noselection is received, flow of method 100 branches NO and processingremains idle. In some examples, a specific amount of idle time mayresult in removing the UI insertion points from display. In exampleswhere a selection of a UI insertion point is received, flow of method100 branches YES and processing proceeds to processing operation 116. Atprocessing operation 116, the selected emoji is inserted into acommunication at a position that corresponds with the selected UIfeature for insertion.

Flow may proceed to decision operation 118, where it is determinedwhether there is an update to be made to the positioning of the selectedemoji. If no input is received for update, flow of method 100 branchesNO and processing remains idle. If an update is to occur to thepositioning of the selected emoji, flow branches YES and processingreturns to processing operation 112. At processing operation 112, UIfeatures for re-positioning of the emoji within the communication may bepresented to the user.

For efficiency, the word input entered, the emoji selection and thechoice of position is saved for the user. The user's selection is savedin the local storage or over a distributed storage (e.g. of adistributed application/service. This way, when the user type the wordagain, instead of selecting the first emoji and first kind of position,the invention select the previous selected emoji and position. This maybe an instance where an emoji can be automatically inserted at aspecific position, for example, based on contextual analysis describedabove. In some instance, shortcuts can be set for quicker insertion ofemojis at specific positions. For instance, a user could simply click“up”+“enter”+“enter” to have the exact behavior chosen from pastinstances of emoji insertion. The choice of being locally is mainly tohave good performance when the user is typing. However, to reach ahigher level of performance, that storage is loaded in memory once thesystem that use the invention is initialized. Such data may be savedback to the local storage once the user is making a new selection ormodify an existing choice for an word-emoji or word-emoji-position.

FIG. 2 illustrates an exemplary method 200 related to scanning for andreplacing content with emojis on behalf of a user with which aspects ofthe present disclosure may be practiced. As an example, method 200 maybe executed by an exemplary processing device and/or system such asthose shown in FIGS. 3-5. In examples, method 200 may execute on adevice comprising at least one processor configured to store and executeoperations, programs or instructions. Operations performed in method 200may correspond to operations executed by a system and/or service thatexecute computer programs, application programming interfaces (APIs),neural networks or machine-learning processing, among other examples. Asan example, processing operations executed in method 200 may beperformed by one or more hardware components. In another example,processing operations executed in method 200 may be performed by one ormore software components. In some examples, processing operationsdescribed in method 200 may be executed by one or moreapplications/services associated with a web service that has access to aplurality of application/services, devices, knowledge resources, etc.Processing operations described in method 200 may be implemented by oneor more components connected over a distributed network, where anexemplary collaborative team environment may be a distributed serviceaccessed via network connection.

Method 200 begins at processing operation 202, where a UI input foremoji insertion may be received. For example, a UI feature may beselectable that, when selected, causes an application/service toinitiate scanning of a communication (or multiple communications) toreplace content with emojis. Examples of communications (e.g. electroniccommunications) have been provided in the foregoing. In other examplesof method 200, scanning (processing operation 204) of content of acommunication may occur automatically, where an exemplaryapplication/service is configured to proactively scan content on behalfof a user. In such cases, a notification may be provided to a user thatindicates that content can be replaced with emojis, for example, toshort (and liven up) a communication.

Flow may proceed to processing operation 204, where content of acommunication is scanned for inserting emojis to replace one or moreportions of content. As reference above, content of a communication maybe scanned where specific portions of content can be replaced withemojis on behalf of a user. In examples, scanning may occur on one ormore portions of a communication such as an input field, a message orentire message threads. As an example, a long message may be writtenout, where an exemplary application/service is configured to scan themessage content, analyze the message content and replace some of thewords with emojis to shorten (and liven up) the message. Flow mayproceed to processing operation 206, where the communication isanalyzed. Contextual analysis of a communication as well as learningmodeling (e.g. based on signal data associated with past actions from auser or plurality of users) can be utilized to improve processing, forexample, to predict which words a user may want to replace and how tore-configure the message content on behalf of the user. For instance,contextual analysis may yield a determination that the user may preferto replace some words with emojis but not others. Other aspects ofanalysis (processing operation 206) may be rule-based, for example, tolimit the number of emojis used to replace a word, sentence, paragraph,etc., which may improve user satisfaction.

Method 200 may proceed to processing operation 208, where suggestionsfor replacing content with emojis may be presented to a user.Suggestions for replacing content with emojis may occur on an individualbasis (e.g. word or string of input) or for a communication (e.g.message thread) as a whole. For instance, a draft of message withreplacement emojis may be provided to a user for review. A user may bepresented an option to accept replacement of content with emojis, forexample, some or all of the suggested modifications. In alternativeexamples, notifications may be provided (through the user interface)indicating that suggestions are available for replacing a portion ofcontent with an emoji on behalf of the user.

In any example, flow may proceed to decision operation 210, where it isdetermined whether the user accepts replacement of one or more contentportions with emojis. In some instances, a UI may provide a preview ofchanged content for the user. If the user does not accept a change, flowof method 200 branches NO and flow proceeds to processing operation 212,where a change is discarded. If the user does accept a change, flow ofmethod 200 branches YES and flow proceeds to processing operation 214,where changes to the communication are saved for the user.

FIGS. 3-5 and the associated descriptions provide a discussion of avariety of operating environments in which examples of the invention maybe practiced. However, the devices and systems illustrated and discussedwith respect to FIGS. 3-5 are for purposes of example and illustrationand are not limiting of a vast number of computing device configurationsthat may be utilized for practicing examples of the invention, describedherein.

FIG. 3 is a block diagram illustrating physical components of acomputing device 302, for example a mobile processing device, with whichexamples of the present disclosure may be practiced. Among otherexamples, computing device 302 may be an exemplary computing deviceconfigured for to work with an enhanced user interface that improvesuser interaction for suggestion and placement of emojis in an exemplarycommunication as described herein. In a basic configuration, thecomputing device 302 may include at least one processing unit 304 and asystem memory 306. Depending on the configuration and type of computingdevice, the system memory 306 may comprise, but is not limited to,volatile storage (e.g., random access memory), non-volatile storage(e.g., read-only memory), flash memory, or any combination of suchmemories. The system memory 306 may include an operating system 307 andone or more program modules 308 suitable for running softwareprograms/modules 320 such as IO manager 324, other utility 326 andapplication 328. As examples, system memory 306 may store instructionsfor execution. Other examples of system memory 306 may store dataassociated with applications. The operating system 307, for example, maybe suitable for controlling the operation of the computing device 302.Furthermore, examples of the invention may be practiced in conjunctionwith a graphics library, other operating systems, or any otherapplication program and is not limited to any particular application orsystem. This basic configuration is illustrated in FIG. 3 by thosecomponents within a dashed line 322. The computing device 302 may haveadditional features or functionality. For example, the computing device302 may also include additional data storage devices (removable and/ornon-removable) such as, for example, magnetic disks, optical disks, ortape. Such additional storage is illustrated in FIG. 3 by a removablestorage device 309 and a non-removable storage device 310.

As stated above, a number of program modules and data files may bestored in the system memory 306. While executing on the processing unit304, program modules 308 (e.g., Input/Output (IO) manager 324, otherutility 326 and application 328) may perform processes including, butnot limited to, one or more of the stages of the operations describedthroughout this disclosure. Other program modules that may be used inaccordance with examples of the present invention may include electronicmail and contacts applications, word processing applications,spreadsheet applications, database applications, slide presentationapplications, drawing or computer-aided application programs, photoediting applications, authoring applications, etc.

Furthermore, examples of the invention may be practiced in an electricalcircuit comprising discrete electronic elements, packaged or integratedelectronic chips containing logic gates, a circuit utilizing amicroprocessor, or on a single chip containing electronic elements ormicroprocessors. For example, examples of the invention may be practicedvia a system-on-a-chip (SOC) where each or many of the componentsillustrated in FIG. 3 may be integrated onto a single integratedcircuit. Such an SOC device may include one or more processing units,graphics units, communications units, system virtualization units andvarious application functionality all of which are integrated (or“burned”) onto the chip substrate as a single integrated circuit. Whenoperating via an SOC, the functionality described herein may be operatedvia application-specific logic integrated with other components of thecomputing device 402 on the single integrated circuit (chip). Examplesof the present disclosure may also be practiced using other technologiescapable of performing logical operations such as, for example, AND, OR,and NOT, including but not limited to mechanical, optical, fluidic, andquantum technologies. In addition, examples of the invention may bepracticed within a general purpose computer or in any other circuits orsystems.

The computing device 302 may also have one or more input device(s) 312such as a keyboard, a mouse, a pen, a sound input device, a device forvoice input/recognition, a touch input device, etc. The output device(s)314 such as a display, speakers, a printer, etc. may also be included.The aforementioned devices are examples and others may be used. Thecomputing device 302 may include one or more communication connections316 allowing communications with other computing devices 318. Examplesof suitable communication connections 316 include, but are not limitedto, RF transmitter, receiver, and/or transceiver circuitry; universalserial bus (USB), parallel, and/or serial ports.

The term computer readable media as used herein may include computerstorage media. Computer storage media may include volatile andnonvolatile, removable and non-removable media implemented in any methodor technology for storage of information, such as computer readableinstructions, data structures, or program modules. The system memory306, the removable storage device 309, and the non-removable storagedevice 310 are all computer storage media examples (i.e., memorystorage.) Computer storage media may include RAM, ROM, electricallyerasable read-only memory (EEPROM), flash memory or other memorytechnology, CD-ROM, digital versatile disks (DVD) or other opticalstorage, magnetic cassettes, magnetic tape, magnetic disk storage orother magnetic storage devices, or any other article of manufacturewhich can be used to store information and which can be accessed by thecomputing device 302. Any such computer storage media may be part of thecomputing device 302. Computer storage media does not include a carrierwave or other propagated or modulated data signal.

Communication media may be embodied by computer readable instructions,data structures, program modules, or other data in a modulated datasignal, such as a carrier wave or other transport mechanism, andincludes any information delivery media. The term “modulated datasignal” may describe a signal that has one or more characteristics setor changed in such a manner as to encode information in the signal. Byway of example, and not limitation, communication media may includewired media such as a wired network or direct-wired connection, andwireless media such as acoustic, radio frequency (RF), infrared, andother wireless media.

FIGS. 4A and 4B illustrate a mobile computing device 400, for example, amobile telephone, a smart phone, a personal data assistant, a tabletpersonal computer, a phablet, a slate, a laptop computer, and the like,with which examples of the invention may be practiced. Mobile computingdevice 400 may be an exemplary computing device configured to work withan enhanced user interface that improves user interaction for suggestionand placement of emojis in an exemplary communication as describedherein. Application command control may be provided for applicationsexecuting on a computing device such as mobile computing device 400.Application command control relates to presentation and control ofcommands for use with an application through a user interface (UI) orgraphical user interface (GUI). In one example, application commandcontrols may be programmed specifically to work with a singleapplication. In other examples, application command controls may beprogrammed to work across more than one application. With reference toFIG. 4A, one example of a mobile computing device 400 for implementingthe examples is illustrated. In a basic configuration, the mobilecomputing device 400 is a handheld computer having both input elementsand output elements. The mobile computing device 400 typically includesa display 405 and one or more input buttons 410 that allow the user toenter information into the mobile computing device 400. The display 405of the mobile computing device 400 may also function as an input device(e.g., touch screen display). If included, an optional side inputelement 415 allows further user input. The side input element 415 may bea rotary switch, a button, or any other type of manual input element. Inalternative examples, mobile computing device 400 may incorporate moreor less input elements. For example, the display 405 may not be a touchscreen in some examples. In yet another alternative example, the mobilecomputing device 400 is a portable phone system, such as a cellularphone. The mobile computing device 400 may also include an optionalkeypad 435. Optional keypad 435 may be a physical keypad or a “soft”keypad generated on the touch screen display or any other soft inputpanel (SIP). In various examples, the output elements include thedisplay 405 for showing a GUI, a visual indicator 420 (e.g., a lightemitting diode), and/or an audio transducer 425 (e.g., a speaker). Insome examples, the mobile computing device 400 incorporates a vibrationtransducer for providing the user with tactile feedback. In yet anotherexample, the mobile computing device 400 incorporates input and/oroutput ports, such as an audio input (e.g., a microphone jack), an audiooutput (e.g., a headphone jack), and a video output (e.g., a HDMI port)for sending signals to or receiving signals from an external device.

FIG. 4B is a block diagram illustrating the architecture of one exampleof a mobile computing device. That is, the mobile computing device 400can incorporate a system (i.e., an architecture) 402 to implement someexamples. In one examples, the system 402 is implemented as a “smartphone” capable of running one or more applications (e.g., browser,e-mail, calendaring, contact managers, messaging clients, games, andmedia clients/players). In some examples, the system 402 is integratedas a computing device, such as an integrated personal digital assistant(PDA), tablet and wireless phone.

One or more application programs 466 may be loaded into the memory 462and run on or in association with the operating system 464. Examples ofthe application programs include phone dialer programs, e-mail programs,personal information management (PIM) programs, word processingprograms, spreadsheet programs, Internet browser programs, messagingprograms, and so forth. The system 402 also includes a non-volatilestorage area 468 within the memory 462. The non-volatile storage area468 may be used to store persistent information that should not be lostif the system 402 is powered down. The application programs 466 may useand store information in the non-volatile storage area 468, such ase-mail or other messages used by an e-mail application, and the like. Asynchronization application (not shown) also resides on the system 402and is programmed to interact with a corresponding synchronizationapplication resident on a host computer to keep the information storedin the non-volatile storage area 468 synchronized with correspondinginformation stored at the host computer. As should be appreciated, otherapplications may be loaded into the memory 462 and run on the mobilecomputing device (e.g. system 402) described herein.

The system 402 has a power supply 470, which may be implemented as oneor more batteries. The power supply 470 might further include anexternal power source, such as an AC adapter or a powered docking cradlethat supplements or recharges the batteries.

The system 402 may include peripheral device port 430 that performs thefunction of facilitating connectivity between system 402 and one or moreperipheral devices. Transmissions to and from the peripheral device port430 are conducted under control of the operating system (OS) 464. Inother words, communications received by the peripheral device port 430may be disseminated to the application programs 466 via the operatingsystem 464, and vice versa.

The system 402 may also include a radio interface layer 472 thatperforms the function of transmitting and receiving radio frequencycommunications. The radio interface layer 472 facilitates wirelessconnectivity between the system 402 and the “outside world,” via acommunications carrier or service provider. Transmissions to and fromthe radio interface layer 472 are conducted under control of theoperating system 464. In other words, communications received by theradio interface layer 472 may be disseminated to the applicationprograms 566 via the operating system 464, and vice versa.

The visual indicator 420 may be used to provide visual notifications,and/or an audio interface 474 may be used for producing audiblenotifications via the audio transducer 425 (as described in thedescription of mobile computing device 400). In the illustrated example,the visual indicator 420 is a light emitting diode (LED) and the audiotransducer 425 is a speaker. These devices may be directly coupled tothe power supply 470 so that when activated, they remain on for aduration dictated by the notification mechanism even though theprocessor 460 and other components might shut down for conservingbattery power. The LED may be programmed to remain on indefinitely untilthe user takes action to indicate the powered-on status of the device.The audio interface 474 is used to provide audible signals to andreceive audible signals from the user. For example, in addition to beingcoupled to the audio transducer 425 (shown in FIG. 4A), the audiointerface 474 may also be coupled to a microphone to receive audibleinput, such as to facilitate a telephone conversation. In accordancewith examples of the present invention, the microphone may also serve asan audio sensor to facilitate control of notifications, as will bedescribed below. The system 402 may further include a video interface476 that enables an operation of an on-board camera 430 to record stillimages, video stream, and the like.

A mobile computing device 400 implementing the system 402 may haveadditional features or functionality. For example, the mobile computingdevice 400 may also include additional data storage devices (removableand/or non-removable) such as, magnetic disks, optical disks, or tape.Such additional storage is illustrated in FIG. 4B by the non-volatilestorage area 468.

Data/information generated or captured by the mobile computing device400 and stored via the system 402 may be stored locally on the mobilecomputing device 400, as described above, or the data may be stored onany number of storage media that may be accessed by the device via theradio 472 or via a wired connection between the mobile computing device400 and a separate computing device associated with the mobile computingdevice 400, for example, a server computer in a distributed computingnetwork, such as the Internet. As should be appreciated suchdata/information may be accessed via the mobile computing device 400 viathe radio 472 or via a distributed computing network. Similarly, suchdata/information may be readily transferred between computing devicesfor storage and use according to well-known data/information transferand storage means, including electronic mail and collaborativedata/information sharing systems.

FIG. 5 illustrates one example of the architecture of a system forproviding an application that reliably accesses target data on a storagesystem and handles communication failures to one or more client devices,as described above. The system of FIG. 5 may be an exemplary systemconfigured to work with an enhanced user interface that improves userinteraction for suggestion and placement of emojis in an exemplarycommunication as described herein. Target data accessed, interactedwith, or edited in association with programming modules 308 and/orapplications 320 and storage/memory (described in FIG. 3) may be storedin different communication channels or other storage types. For example,various documents may be stored using a directory service 522, a webportal 524, a mailbox service 526, an instant messaging store 528, or asocial networking site 530, 10 manager 324, other utility 326,application 328 and storage systems may use any of these types ofsystems or the like for enabling data utilization, as described herein.A server 520 may provide storage system for use by a client operating ongeneral computing device 302 and mobile device(s) 400 through network515. By way of example, network 515 may comprise the Internet or anyother type of local or wide area network, and a client node may beimplemented for connecting to network 515. Examples of a client nodecomprise but are not limited to: a computing device 302 embodied in apersonal computer, a tablet computing device, and/or by a mobilecomputing device 400 (e.g., mobile processing device). As an example, aclient node may connect to the network 515 using a wireless networkconnection (e.g. WiFi connection, Bluetooth, etc.). However, examplesdescribed herein may also extend to connecting to network 515 via ahardwire connection. Any of these examples of the client computingdevice 302 or 400 may obtain content from the store 516.

Reference has been made throughout this specification to “one example”or “an example,” meaning that a particular described feature, structure,or characteristic is included in at least one example. Thus, usage ofsuch phrases may refer to more than just one example. Furthermore, thedescribed features, structures, or characteristics may be combined inany suitable manner in one or more examples.

One skilled in the relevant art may recognize, however, that theexamples may be practiced without one or more of the specific details,or with other methods, resources, materials, etc. In other instances,well known structures, resources, or operations have not been shown ordescribed in detail merely to observe obscuring aspects of the examples.

While sample examples and applications have been illustrated anddescribed, it is to be understood that the examples are not limited tothe precise configuration and resources described above. Variousmodifications, changes, and variations apparent to those skilled in theart may be made in the arrangement, operation, and details of themethods and systems disclosed herein without departing from the scope ofthe claimed examples.

What is claimed is:
 1. A method comprising: deriving context of amessage being entered by a user in a user interface, wherein the messageis part of a message thread; searching digital images based on thecontext to select one or more digital images; presenting, through theuser interface, the one or more digital images for insertion atdifferent positions within the message thread based on the context;receiving, through the user interface, a selection of at least one ofthe one or more digital images; modifying the message thread byinserting the at least one of the one or more digital images to replacecontent at a plurality of positions within the message thread inresponse to the user selection; and storing the modified message threadin a storage device.
 2. The method of claim 1, wherein presenting,through the user interface, the one or more digital images for insertionat the different positions within the message thread comprisespresenting suggested content of the message thread for replacement bythe one or more digital images.
 3. The method of claim 1, whereinpresenting, through the user interface, the one or more digital imagesat the different positions within the message thread comprises rankingand filtering the one or more digital images based on the analysis ofthe context of the message being entered by the user.
 4. The method ofclaim 1, wherein presenting, through the user interface, the one or moredigital images at different positions within the message threadcomprises presenting, through the user interface, a preview of the oneor more digital images positioned within the message thread to the user.5. The method of claim 1, wherein deriving the context of the messagebeing entered by the user in the user interface further comprisesanalyzing content of the message thread that includes the message beingentered by the user.
 6. The method of claim 1, further comprising:automatically inserting the one or more digital images at the differentpositions within the message thread based on the context; whereinpresenting, through a user interface, the one or more digital images atthe different positions within the message thread comprises presentingthe automatically inserted digital images through the user interface forrepositioning.
 7. The method of claim 1, wherein the one or more digitalimages are emojis.
 8. A system comprising: a processor; a memorycomprising instructions, which when executed by the processor, causesthe system to perform operations comprising: deriving context of amessage being entered by a user in a user interface, wherein the messageis part of a message thread; searching digital images based on thecontext to select one or more digital images; presenting, through theuser interface, the one or more digital images for insertion atdifferent positions within the message thread based on the context;receiving, through the user interface, a selection of at least one ofthe one or more digital images; modifying the message thread byinserting the at least one of the one or more digital images to replacecontent at a plurality of positions within the message thread inresponse to the user selection; and storing the modified message thread.9. The system of claim 8, wherein presenting, through the userinterface, the one or more digital images for insertion at the differentpositions within the message thread comprises presenting suggestedcontent of the message thread for replacement by the one or more digitalimages.
 10. The system of claim 8, wherein presenting, through the userinterface, the one or more digital images at the different positionswithin the message thread comprises ranking and filtering the one ormore digital images based on the analysis of the context of the messagebeing entered by the user.
 11. The system of claim 8, whereinpresenting, through the user interface, the one or more digital imagesat different positions within the message thread comprises presenting,through the user interface, a preview of the one or more digital imagespositioned within the message thread to the user.
 12. The system ofclaim 8, wherein deriving the context of the message being entered bythe user in the user interface further comprises analyzing content ofthe message thread that includes the message being entered by the user.13. The system of claim 8, wherein the operations further comprise:automatically inserting the one or more digital images at the differentpositions within the message thread based on the context; whereinpresenting, through a user interface, the one or more digital images atthe different positions within the message thread comprises presentingthe automatically inserted digital images through the user interface forrepositioning.
 14. The system of claim 8, wherein the one or moredigital images are emojis.
 15. A computer-readable medium storingcomputer-executable instructions that, when executed by at least oneprocessor, causes the at least one processor to execute a methodcomprising: deriving context of a message being entered by a user in auser interface, wherein the message is part of a message thread;searching digital images based on the context to select one or moredigital images; presenting, through the user interface, the one or moredigital images for insertion at different positions within the messagethread based on the context; receiving, through the user interface, aselection of at least one of the one or more digital images; modifyingthe message thread by inserting the at least one of the one or moredigital images to replace content at a plurality of positions within themessage thread in response to the user selection; and storing themodified message thread.
 16. The computer readable medium of claim 15,wherein presenting, through the user interface, the one or more digitalimages for insertion at the different positions within the messagethread comprises presenting suggested content of the message thread forreplacement by the one or more digital images.
 17. The computer readablemedium of claim 15, wherein presenting, through the user interface, theone or more digital images at the different positions within the messagethread comprises ranking and filtering the one or more digital imagesbased on the analysis of the context of the message being entered by theuser.
 18. The computer readable medium of claim 15, wherein presenting,through the user interface, the one or more digital images at differentpositions within the message thread comprises presenting, through theuser interface, a preview of the one or more digital images positionedwithin the message thread to the user.
 19. The computer readable mediumof claim 15, wherein deriving the context of the message being enteredby the user in the user interface further comprises analyzing content ofthe message thread that includes the message being entered by the user.20. The computer readable medium of claim 15, wherein the method furthercomprises: automatically inserting the one or more digital images at thedifferent positions within the message thread based on the context;wherein presenting, through a user interface, the one or more digitalimages at the different positions within the message thread comprisespresenting the automatically inserted digital images through the userinterface for repositioning.